// This is the header file of notifier for ObserverPatternV2c
#pragma once

#include "Observer.h"
#include "Enumerations.h"
#include "CountKeys.h"
#include <vector>
#include <iostream>

using namespace std;

class Notifier
{
private:
	Notifier(void);
	static Notifier *instance;
	vector <Observer*> keyEventObservers;		// A vector of observer objects wanting notification of Key Events
	vector <Observer*> classEventObservers;		// A vector of observer objects wanting notification of Class Events
public:
	~Notifier(void);
	bool unsubscribe(Observer* o, event e);
	bool subscribe(Observer* o, event e);
	bool LogEvent(event e, string data);
	static Notifier* getInstance(void);
};


